10294
5587
На этот вопрос уже есть ответы здесь:
Обратить строку в Python
(29 ответов)
Закрыт 4 года назад.
Я пытаюсь перевернуть строку и использую приведенный ниже код, но результирующее значение обратного списка равно None.
Код:
str_a = 'Это движение'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = '' .join (rev_word)
Он возвращает TypeError. Почему? 
.reverse () возвращает значение None. Поэтому не следует присваивать его переменной.
Используйте вместо этого:
stra = 'Это строка'
revword = stra.split ()
revword.reverse ()
revword = ''. присоединиться (revword)
Я запустил код в IDEOne, чтобы вы могли увидеть результат. (Также обратите внимание, что вывод - stringaisThis; вместо этого вы можете использовать '' .join (revword) с пробелом.)
Также обратите внимание, что предоставленный вами метод меняет местами только слова, а не текст. @ ron.rothman предоставил ссылку, в которой подробно описано, как полностью перевернуть строку.
|
Это мой любимый способ перевернуть строку:
stra = "Это строка"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
или, если вы хотите изменить порядок слов:
revword = "" .join (stra.split () [:: - 1])
print (revword) # "строка a - это"
:)
|
Различные переворачивания струны:
instring = 'Это строка'
reversedstring = instring [:: - 1]
print reversestring # gnirts a sihT
wordsreversed = '' .join (слово [:: - 1] для слова в instring.split ())
напечатать словаreversed # sihT si a gnirts
revwordorder = '' .join (слово в слово в instring.split () [:: - 1])
print revwordorder # строка a это Это
revwordandorder = '' .join (слово [:: - 1] для слова в instring.split () [:: - 1])
печать revwordandorder # gnirts a si sihT
|
Для справки в будущем, когда объект имеет такой метод, как [] .reverse (), он обычно выполняет это действие с объектом (т. Е. Список сортируется и ничего не возвращает, None) в отличие от встроенных функций, таких как sorted, которые выполняют действие с объект и возвращает значение (то есть отсортированный список)
|
>>> s = 'это строка'
>>> s [:: - 1]
'gnirts a si siht'
>>> '' .join (обратное (s))
'gnirts a si siht'
|
Цикл for выполняет итерацию строки от конца (последняя буква) до начала (первая буква)
>>> s = 'Вы тоже можете попробовать:]'
>>> rev = ''
>>> для i в диапазоне (len (s) - 1, -1, -1):
... rev + = s [i]
>>> rev
']: oot siht yrt nac uoY'
|
На основании комментариев и других ответов:
str_a = 'это строка'
rev_word = '' .join (обратное (str_a.split ()))
В конце концов, цепочка методов работает в Python ...
|
Перевернуть список можно более чем одним способом. Как упоминалось в предыдущих ответах, два очень заметны: один с функцией reverse () и два с функцией нарезки. Я даю некоторое представление о том, какой из них мы должны предпочесть.
Мы всегда должны использовать функцию reverse () для обращения списка Python. Две причины: одна разворот на месте и две быстрее других.
У меня есть цифры, подтверждающие мой ответ,
В [15]: len (l)
Вых [15]: 1000
В [16]:% timeit -n1 l.reverse ()
1 петля, лучше всего 3: 7,87 мкс на петлю
В [17]:% timeit -n1 l [:: - 1]
1 петля, лучше всего 3: 10 мкс на петлю
Для списка из 1000 целых чисел функция reverse () работает лучше, чем нарезка.
|
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками python или задайте свой вопрос.